package jmysql;

import com.mysql.jdbc.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.mysql.jdbc.Connection;

/* 
 * Contiene todas las conexiones a la base de datos con respectos a las �reas,
 * las retorna para ser utilizadas
 * */

public class CArea {

	
	Cmysql cmysql;
	public CArea(){
		cmysql=new Cmysql();//construimos el objeto que permite la conexi�n 
	}
	  
	 
	String sql_Existe="";
	//retornamos un string con los datos necesarios
	
	/*
	 * Debemos retornar valores m�s completos para las consultas
	 * */
	 
	public String ListaAreas(){
		String resultado="";
		String inicio="<option value=\"";
		String value="\">";
		String fin="</option>\n";
		
		String sql="select idarea,nomarea from area where estado=1 and idarea<>1";
		try {
            Connection conexion = (Connection) cmysql.dataSource.getConnection();
            PreparedStatement st=(PreparedStatement) conexion.prepareStatement(sql);
            ResultSet rs = st.executeQuery();
            while(rs.next()){
            	resultado+=
            			inicio+
            			rs.getObject(1).toString()+
            			value+
            			rs.getObject(2).toString().toUpperCase()+
            			fin;            	
            }
            st.close();
            conexion.close();
        }
        catch(SQLException e){
        	System.out.println(""+e.toString());
        }
		return resultado;
	}
	
	
	public boolean AgregarArea(String nomarea,String descripcion,String ubicacion){
		boolean salida=false;
		try {
            Connection conexion = (Connection) cmysql.dataSource.getConnection();
            PreparedStatement st=(PreparedStatement) conexion.prepareStatement("insert into area(nomarea,estado,descripcion,ubicacion)" +
            		" values (?,?,?,?)");
            st.setString(1, nomarea); 
            st.setInt(2, 1);//estado 
            st.setString(3, descripcion);
            st.setString(4, ubicacion);
            st.execute();
            salida=true;//se ejecuta sin problemas
            st.close();
            conexion.close();
        }
        catch(SQLException e){
        	System.out.println(""+e.toString());
        }
		return salida;
	}
	
	//revisa si existe el nombre de �rea
	public boolean Existe(String nomarea){
			boolean salida=false;
			try {
	            Connection conexion = (Connection) cmysql.dataSource.getConnection();
	            PreparedStatement st=(PreparedStatement) conexion.prepareStatement("select descripcion from area where nomarea=?");
	            st.setString(1, nomarea);
	            ResultSet rs = st.executeQuery();
	            if(rs.next())
	                salida=true;
					
	            rs.close();
	            st.close();
	            conexion.close();
	        }
	        catch(SQLException e){
	        	System.out.println(""+e.toString());
	        }
			return salida;
	}

	
	
	//Ahora vamos con los json
	public void ListaAreaJson(){
		JSONArray Items=new JSONArray();
		JSONArray item=new JSONArray();
		JSONObject j=new JSONObject();
		try {
            Connection conexion = (Connection) cmysql.dataSource.getConnection();
            PreparedStatement st=(PreparedStatement) conexion.prepareStatement("select nomarea, descripcion from area where idarea<>1");
            ResultSet rs = st.executeQuery();
            while(rs.next()){
            	item=new JSONArray();
            	item.put(rs.getObject(1).toString());
            	item.put(rs.getObject(2).toString());
            	//acumula todos 
            	Items.put(item);
            }
            rs.close();
            st.close();
            conexion.close();
        }
        catch(SQLException e){
        	System.out.println(""+e.toString());
        }
		try {
			j.put("aDataSet", Items);
			System.out.println(""+j.toString());
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
		
	//para la concatenacion
	public String concatCadena(String s){
		return s.length()>0 ? ",":"";
	}
	
	
	//para poder actualizar
	public String CrearQueryUpdate(JSONObject update_data){
		String salida="";
		JSONArray llaves=update_data.names();
		
		for(int l=0;l<llaves.length();l++){
			try {
				String llave=llaves.getString(l);
				Object o=update_data.get(llave);
				if(o instanceof String)
					salida+=concatCadena(salida)+llave+"='"+o.toString()+"'";	
				else
					salida+=concatCadena(salida)+llave+"="+o.toString();
			} catch (JSONException e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		}
		return salida;
	}
	
	
	/*UpdateArea
	 * 
	 * */
	public boolean UpdateArea(int idarea,String query){
		boolean salida=false;
		System.out.println("query final:"+query);
		try {
            Connection conexion = (Connection) cmysql.dataSource.getConnection();
            PreparedStatement st=(PreparedStatement) conexion.prepareStatement(
            		"update area set "+query+" where idarea="+idarea
            		);            
            st.execute();
            salida=true;
            st.close();
            conexion.close();
        }
        catch(SQLException e){
        	System.out.println(""+e.toString());
        }
		return salida;
	}
	
	
	/*
	 * Es para el la lista de las �reas en la DataTable
	 * */
	public JSONObject GetListaArea(){
		JSONArray Items=new JSONArray();
		JSONArray item=new JSONArray();
		JSONObject j=new JSONObject();

		String edit="<img style=\"width:20px;height:20px;\" src=\"images/sistema/options.gif\"/>";
		try {
            Connection conexion = (Connection) cmysql.dataSource.getConnection();
            PreparedStatement st=(PreparedStatement) conexion.prepareStatement("" +
            		"select idarea,nomarea,estado,descripcion,ubicacion from area where idarea<>1");
            ResultSet rs = st.executeQuery();
            while(rs.next()){
            	item=new JSONArray();
            	item.put("<button style=\"width:45px;\">"+edit+"</button>"); 
            	item.put(rs.getObject(1).toString());//idarea
            	item.put(rs.getObject(2).toString());//nomarea
            	if(rs.getInt(3)==1)
            		item.put("Activa");
            	else
            		item.put("Inactiva");
            	
            	item.put(rs.getObject(4).toString());//descripcion
            	item.put(rs.getObject(5).toString());//ubicacion
            	//Junta todos los elementos en un jsonarray
            	Items.put(item);
            }
            rs.close();
            st.close();
            conexion.close(); 
        }
        catch(SQLException e){
        	System.out.println(""+e.toString());
        }
		try {
			j.put("aDataSet", Items);
		} catch (JSONException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return j;
	}
	
}
